package com.cruise.game.model.vo.order;

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 订单详情VO
 * 
 * @author cruise
 * @date 2025-02-28
 */
@Data
public class OrderDetailVO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 订单ID
     */
    private Long id;

    /**
     * 订单编号
     */
    private String orderNumber;

    /**
     * 服务名称
     */
    private String serviceName;

    /**
     * 价格
     */
    private BigDecimal price;

    /**
     * 账号类型
     */
    private String accountType;

    /**
     * 游戏账号用户名
     */
    private String accountUsername;

    /**
     * 游戏账号密码
     */
    private String accountPassword;

    /**
     * 任务描述
     */
    private String taskDescription;

    /**
     * 预期完成时间
     */
    private LocalDateTime expectedCompletionTime;

    /**
     * 订单状态
     */
    private String status;

    /**
     * 下单时间
     */
    private LocalDateTime orderedAt;

    /**
     * 接单时间
     */
    private LocalDateTime acceptedAt;

    /**
     * 完成时间
     */
    private LocalDateTime completedAt;

    /**
     * 完成截图URL
     */
    private String completionImageUrl;

    /**
     * 用户信息
     */
    private UserInfo user;

    /**
     * 代理信息
     */
    private AgentInfo agent;

    /**
     * 评价信息
     */
    private RatingInfo rating;

    /**
     * 用户信息
     */
    @Data
    public static class UserInfo implements Serializable {

        private static final long serialVersionUID = 1L;

        /**
         * 用户ID
         */
        private Long id;

        /**
         * 用户昵称
         */
        private String nickname;
    }

    /**
     * 代理信息
     */
    @Data
    public static class AgentInfo implements Serializable {

        private static final long serialVersionUID = 1L;

        /**
         * 代理ID
         */
        private Long id;

        /**
         * 代理昵称
         */
        private String nickname;
    }

    /**
     * 评价信息
     */
    @Data
    public static class RatingInfo implements Serializable {

        private static final long serialVersionUID = 1L;

        /**
         * 评价ID
         */
        private Long id;

        /**
         * 评分
         */
        private Integer rating;

        /**
         * 评价内容
         */
        private String comment;

        /**
         * 评价时间
         */
        private LocalDateTime createdAt;
    }
}
